package com.wish.wishhouse_foreclosure.entity;

import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.util.Date;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>
 * 收款计划表
 * </p>
 *
 * @author weijiaz
 * @since 2021-04-05
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("t_cw_receipt_plan")
public class TCwReceiptPlan implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 收款单号
     */
    @TableField("receipt_order_no")
    private String receiptOrderNo;

    /**
     * 商户ID
     */
    @TableField("business_id")
    private Long businessId;

    /**
     * 合同ID
     */
    @TableField("contract_id")
    private Long contractId;

    /**
     * 合同编号
     */
    @TableField("contract_no")
    private String contractNo;

    /**
     * 合同类型	,"1：收房合同，
2：出房合同"
     */
    @TableField("contract_type")
    private Integer contractType;

    /**
     * 解约协议ID（解约时才有，收房是收房解约协议，出房是出房解约协议）
     */
    @TableField("t_termination_id")
    private Long tTerminationId;

    /**
     * 楼盘ID
     */
    @TableField("premise_id")
    private Long premiseId;

    /**
     * 小区(使用楼盘名)
     */
    @TableField("premise_name")
    private String premiseName;

    /**
     * 房源ID
     */
    @TableField("room_id")
    private String roomId;

    /**
     * 房源编号
     */
    @TableField("room_code")
    private String roomCode;

    /**
     * 承租房间(使用房源名称)
     */
    @TableField("room_name")
    private String roomName;

    /**
     * 业主ID
     */
    @TableField("owner_id")
    private Long ownerId;

    /**
     * 业主姓名
     */
    @TableField("owner_name")
    private String ownerName;

    /**
     * 租客ID
     */
    @TableField("tenant_id")
    private Long tenantId;

    /**
     * 租客姓名(面向业主收款时，为空)
     */
    @TableField("tenant_name")
    private String tenantName;
    /**
     * 付款类型
     ,1:收房付款单 2：租务付款单 3：解约结算收款
     */
    @TableField("pay_type")
    private Integer payType;
    /**
     * 收款类型	,1:房租收款 2：租务收款 3：解约结算收款 4：续约结算收款
     */
    @TableField("receipt_type")
    private Integer receiptType;

    /**
     * 收款状态	1:未收款 2：已收款 3：已中止  4：已冻结（未收款的时候，才会变成已冻结，所以恢复冻结状态的时候，是恢复成未收款状态）
     */
    @TableField("sk_status")
    private Integer skStatus;

    /**
     * 账单类型（金融属性）,"1：分期变更
 2：租约保理变更
 3：退租变更
 4：普通账单(正常房租租务计划)"	参照枚举CollectionPlanZdType
     */
    @TableField("bill_type")
    private Integer billType;

    /**
     * 款项（费用类型）	,1:水费 2：电费，3：煤/燃气费，80：租金，81：押金，90：解约结算，99:其它
     */
    @TableField("item_type")
    private Integer itemType;

    /**
     * 其它款项	,款项为其它的时候，输入
     */
    @TableField("other_item_name")
    private String otherItemName;

    /**
     * 支付金额（应收金额，房租时=不含税净价+税费）
     */
    @TableField("payment_amount")
    private BigDecimal paymentAmount;

    /**
     * 实收金额
     */
    @TableField("real_payment_amount")
    private BigDecimal realPaymentAmount;

    /**
     * 选择账期（跟随的第几期房租对应的收款计划ID）,跟随一起付款的时候，应付日期选择设置为同一天
     */
    @TableField("with_receipt_plan_id")
    private Long withReceiptPlanId;

    /**
     * 账期开始日
     */
    @TableField("payment_days_begin")
    private Date paymentDaysBegin;

    /**
     * 账期截止日
     */
    @TableField("payment_days_end")
    private Date paymentDaysEnd;

    /**
     * 预定收款日期
     */
    @TableField("collection_date")
    private Date collectionDate;

    /**
     * 实际收款日期
     */
    @TableField("real_collection_date")
    private Date realCollectionDate;

    /**
     * 第几期（房租收款的时候）
     */
    @TableField("receipt_number")
    private Long receiptNumber;

    /**
     * 线下支付方式（直接录入已收款的收款计划时选择的）	,1:快捷同，2：支付宝，3：微信，4：现金，5：银行卡转账，6：POS机刷卡，99：其它
     */
    @TableField("pay_method")
    private Long payMethod;

    /**
     * 其它支付方式	,支付方式为其它的时候，输入
     */
    @TableField("other_pay_method")
    private String otherPayMethod;

    /**
     * 支付流水号（线下直接录入收款的时候输入，不是线上的流水号）
     */
    @TableField("pay_flow_no")
    private String payFlowNo;

    /**
     * 账期房租金额（净价，不含税）
     */
    @TableField("rental_price")
    private BigDecimal rentalPrice;

    /**
     * 税费
     */
    @TableField("tax")
    private BigDecimal tax;

    /**
     * 操作人
     */
    @TableField("operation_user")
    private String operationUser;

    /**
     * 备注
     */
    @TableField("remark")
    private String remark;

    /**
     * 预留字段1
     */
    @TableField("reserve1")
    private BigDecimal reserve1;

    /**
     * 预留字段2
     */
    @TableField("reserve2")
    private Long reserve2;

    /**
     * 预留字段3
     */
    @TableField("reserve3")
    private String reserve3;

    /**
     * 预留字段4
     */
    @TableField("reserve4")
    private String reserve4;

    /**
     * 预留字段5
     */
    @TableField("reserve5")
    private String reserve5;

    /**
     * 删除标识	,0:未删除，1：删除
     */
    @TableField("del_flg")
    private Boolean delFlg;

    /**
     * 创建用户ID
     */
    @TableField("create_userid")
    private Long createUserid;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private Date createTime;

    /**
     * 更新用户ID
     */
    @TableField("update_userid")
    private Long updateUserid;

    /**
     * 更新时间
     */
    @TableField("update_time")
    private Date updateTime;

    /**
     * 付款单号
     */
    @TableField("pay_order_no")
    private String payOrderNo;

    @TableField("pay_state")
    private Integer payState;


    /**
     * 选择账期（跟随的第几期房租对应的付款计划ID）,跟随一起付款的时候，应付日期选择设置为同一天
     */
    @TableField("with_pay_plan_id")
    private Long withPayPlanId;


    /**
     * 预定付款日期
     */
    @TableField("payable_date")
    private Date payableDate;

    /**
     * 实际付款日期
     */
    @TableField("paid_time")
    private Date paidTime;

    /**
     * 第几期（收房付款的时候）
     */
    @TableField("pay_number")
    private Integer payNumber;

    @TableField("repay_type")
    private Integer repayType;
    /**
     * 总期数
     */
    @TableField("total_pay_number")
    private Integer totalPayNumber;



}
